﻿#pragma execution_character_set("utf-8")

#include "MyLineEdit.h"
#include<QDesktopServices>
#include<QDebug>
#include<QMenu>

// 声明静态成员 menu 和 action
QMenu *MyLineEdit::menu = nullptr;
QAction *MyLineEdit::action = nullptr;

void MyLineEdit::contextMenuEvent(QContextMenuEvent *event)
{

    // 如果menu 是空的 初始化menu 和action
    if(!menu){
#ifdef _DEBUG
		qDebug() << " goto inital the menu";
#endif
        //创建一个默认的menu
		menu = createStandardContextMenu();
        // 创建一个action
		action= new QAction(QIcon(":image/sousuo.png"), "搜索这一行语句", this);
        // 将action 添加到menu
        menu->addAction(action);
        // 链接处理函数
        connect(action,SIGNAL(triggered(bool)),this,SLOT(onAcTrid()));

    }
   

    // 这是每次的鼠标邮件都会引起的事件 每次都从text 中重新设置text
	auto str = "搜索 " + text().trimmed();
	action->setText(str);
#ifdef _DEBUG
	qDebug() << str;
#endif // _DEBUG
	// 在鼠标右击的地方 展示menu
    menu ->exec(event->globalPos());
}

// 构造 MyLineEdit
MyLineEdit::MyLineEdit(QWidget *parent,
                       QContextMenuEvent::Reason reason,
                       const QPoint &point):
    QLineEdit(parent),
    QContextMenuEvent(reason,point)
{
    // 设置菜单是 默认的
    setContextMenuPolicy(Qt::DefaultContextMenu);
#ifdef _DEBUG
    qDebug()<<" 创建......";
#endif
}

// 点击新添加的action
void MyLineEdit::onAcTrid()
{
#ifdef _DEBUG
    qDebug()<<" onAcTrid";
#endif
    // 从文本框中去除 前后的空格
    QString strS = text().trimmed();
    // 搜索引擎的网址
    QString http = "https://www.baidu.com/s?ie=UTF-8&wd=";

    // url
    auto    url = http+strS;
    // 打开url
  auto re =  QDesktopServices::openUrl(QUrl(url));

}
